package com.th.common.captcha.service;


import java.io.OutputStream;

/**
 * 图形验证码业务类<br><br>
 * <p>
 * 业务流程
 * <ul>
 *     <li>生成验证码(generateCaptcha) - 保存验证码(save) - 验证验证码(verify)</li>
 *     <li>生成验证码并保存(generateAndSave) - 验证验证码(verify)</li></li>
 * </ul>
 *
 * @author tuhang
 */
public interface GraphicCaptchaService extends BaseCaptchaService {
    /**
     * 生成验证码并输出到流中
     *
     * @param id           存储验证码的具有唯一标识的id(例如SessionId、邮箱、手机号)
     * @param outputStream 输出流
     */
    String generate(String id, OutputStream outputStream);

    /**
     * 生成验证码并输出到流中，并保存
     *
     * @param id           存储验证码的具有唯一标识的id(例如SessionId、邮箱、手机号)
     * @param outputStream 输出流
     */
    default void generateAndSave(String id, OutputStream outputStream) {
        String generatedCaptcha = generate(id, outputStream);
        save(id, generatedCaptcha);
    }
}
